package com.clothing.customization.util;

import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

/**
 * 密码更新SQL脚本执行工具
 */
@Component
@RequiredArgsConstructor
public class PasswordUpdateScript {

    private final JdbcTemplate jdbcTemplate;
    
    @Value("${spring.datasource.url}")
    private String dbUrl;
    
    /**
     * 直接执行SQL脚本更新数据库中的用户密码
     * 将所有用户密码更新为明文 "123456"
     */
    @Transactional
    public void updateDatabasePasswords() {
        // 打印数据库连接信息
        System.out.println("正在连接数据库: " + dbUrl);
        
        // 打印当前用户数量
        Integer userCount = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM tb_user", Integer.class);
        System.out.println("当前用户总数: " + userCount);
        
        // 执行SQL直接更新数据库中的密码
        int updatedRows = jdbcTemplate.update("UPDATE tb_user SET password = '123456'");
        
        System.out.println("密码更新完成: 共更新 " + updatedRows + " 条记录");
        
        // 打印部分用户信息，验证更新结果
        System.out.println("用户密码更新结果示例:");
        jdbcTemplate.query(
            "SELECT id, username, password FROM tb_user LIMIT 5", 
            (rs, rowNum) -> "用户ID: " + rs.getLong("id") + 
                          ", 用户名: " + rs.getString("username") + 
                          ", 密码: " + rs.getString("password")
        ).forEach(System.out::println);
    }
} 